1. Field of the Invention
The present invention relates to a technology for aiding logic verification of digital circuits, particularly function verification of digital circuits.
2. Description of the Related Art
Conventionally, in many cases, function blocks and functions of modules and systems such as an encoder and a decoder for MPEG, and an inverse cosine conversion block inside are realized with commands including a series of process steps. A “command” represents, in addition to reading and writing, a bunch of functions such as “drawing a triangle” and “burst transferring” and can be invoked according to a series of process steps.
More specifically, the series of process steps refers to setting a value in each register; applying a trigger by setting a value in a predetermined register; executing an internal logic, thereby reading values in the registers and writing values into the registers; and obtaining the result of this execution. A command is executing according to this series of process steps.
For example, for a command of “drawing a triangle”, a triangle can be drawn by setting in a register the coordinate values of the apexes of a triangle to be drawn, a trigger is applied, thereby executing an internal logic.
Function verification of the above function blocks, modules, and systems includes a verification approach in which an operation check of a single command is executed using a simulation by inputting the single command; and another verification approach in which a series of operation checks of commands is executed by execution of sequential simulations by inputting sequential commands.
For example, when operation checks are executed respectively for a command X indicating “drawing a triangle”, a command Y indicating “drawing a tetragon”, and a command Z indicating “changing the background color”, according to the former verification approach of inputting a single command, the command X is first executed and the operation thereof is checked; after the register has been initialized, the command Y is executed and the operation thereof is checked; and after the register has been again initialized, the command Z is executed and the operation thereof is checked.
Though the verification approach of inputting a single command is an effective approach to check the basic operation according to the command, it is difficult to detect bugs.
According to the latter verification approach of inputting sequential commands, operation checks are executed by inputting sequentially the command X, the command Y, and the command Z and executing simulations sequentially. In this case, no register initialization between commands is executed, and in a state where values written by the previous command are held, a new command is executed.
In this manner, because a previous command depended on according to the verification approach of inputting sequential commands, the command Y executed later refers to the register into which values have been written by the command X previously executed, as a result, the command Y draws a wrong figure. Therefore, it is detected that bugs have been generated when the command Y is executed sequentially after the command X.
The approach of inputting the sequential commands assumes sequential operations that can occur actually. Therefore, this approach is effective because more bugs can be detected compared to the approach of inputting a single command.
The above approaches of inputting a single command and of inputting sequential commands have conventionally been adopted commonly on an actual site for design and verification. Japanese Patent Application Laid-Open Publication Nos. H5-151297, 2002-157145, and 2004-54549 are, for example, disclosed as known examples for the function verification.
However, though the verification approach of inputting sequential commands is very effective in detecting bugs, the number of combinations of sequential commands is enormous because the number of the commands executed on a digital circuit is originally enormous. For example, even when only 100 commands are executed as sequential commands each consisting of three commands of the 100 commands, one million sequential commands are present. Therefore, verification period becomes long if all of sequential commands are actually verified.
The enormous sequential commands includes many sequential commands that generate no bug and many sequential commands each of which includes commands that are not executed sequentially in actual operations. However, it is difficult to find such sequential commands from among all sequential commands, and to judge to what extent the verification must be executed. Therefore, at present, a bug can not be detected effectively.